﻿using System;
using CoreGraphics;
using Foundation;
using ObjCRuntime;
using UIKit;

namespace Yidun.NTESQuickPassBinding
{
    [Static]
    partial interface Constants
    {
        // extern double NTESQuickPassVersionNumber;
        [Field("NTESQuickPassVersionNumber", "__Internal")]
        double NTESQuickPassVersionNumber { get; }

        // extern const unsigned char[] NTESQuickPassVersionString;
        //[Field("NTESQuickPassVersionString", "__Internal")]
        //byte[] NTESQuickPassVersionString { get; }
    }

    // typedef void (^NTESQPCompletionHandler)(NSDictionary * _Nullable, NTESQPStatus, BOOL);
    delegate void NTESQPCompletionHandler([NullAllowed] NSDictionary arg0, NTESQPStatus arg1, bool arg2);

    // @interface NTESQuickPassManager : NSObject
    [BaseType(typeof(NSObject))]
    interface NTESQuickPassManager
    {
        // @property (assign, nonatomic) BOOL allowUploadInfo;
        [Export("allowUploadInfo")]
        bool AllowUploadInfo { get; set; }

        // @property (assign, nonatomic) NSTimeInterval timeOut;
        [Export("timeOut")]
        double TimeOut { get; set; }

        // +(NTESQuickPassManager * _Nonnull)sharedInstance;
        [Static]
        [Export("sharedInstance")]
        NTESQuickPassManager SharedInstance { get; }

        // -(void)verifyPhoneNumber:(NSString * _Nonnull)phoneNumber businessID:(NSString * _Nonnull)businessID completion:(NTESQPCompletionHandler _Nullable)completionHandler;
        [Export("verifyPhoneNumber:businessID:completion:")]
        void VerifyPhoneNumber(string phoneNumber, string businessID, [NullAllowed] NTESQPCompletionHandler completionHandler);

        // -(void)verifyPhoneNumber:(NSString * _Nonnull)phoneNumber businessID:(NSString * _Nonnull)businessID configURL:(NSString * _Nullable)configURL extData:(NSString * _Nullable)extData completion:(NTESQPCompletionHandler _Nullable)completionHandler;
        [Export("verifyPhoneNumber:businessID:configURL:extData:completion:")]
        void VerifyPhoneNumber(string phoneNumber, string businessID, [NullAllowed] string configURL, [NullAllowed] string extData, [NullAllowed] NTESQPCompletionHandler completionHandler);

        // -(NSString * _Nonnull)getSDKVersion;
        [Export("getSDKVersion")]
        string SDKVersion { get; }
    }

    // typedef void (^AuthCustomViewBlock)(UIView * _Nullable);
    delegate void AuthCustomViewBlock([NullAllowed] UIView arg0);

    // typedef void (^AuthCustomNavBlock)(UIView * _Nullable);
    delegate void AuthCustomNavBlock([NullAllowed] UIView arg0);

    // typedef void (^AuthLoadingViewBlock)(UIView * _Nullable);
    delegate void AuthLoadingViewBlock([NullAllowed] UIView arg0);

    // typedef void (^AuthPrograssHUDBlock)(UIView * _Nullable);
    delegate void AuthPrograssHUDBlock([NullAllowed] UIView arg0);

    // typedef void (^AuthVideoViewBlock)(UIView * _Nullable);
    delegate void AuthVideoViewBlock([NullAllowed] UIView arg0);

    // typedef void (^AuthBackActionBlock)(int);
    delegate void AuthBackActionBlock(int arg0);

    // typedef void (^AuthLoginActionBlock)(BOOL);
    delegate void AuthLoginActionBlock(bool arg0);

    // typedef void (^AuthCheckActionBlock)(BOOL);
    delegate void AuthCheckActionBlock(bool arg0);

    // typedef void (^AuthCloseActionBlock)();
    delegate void AuthCloseActionBlock();

    // typedef void (^AuthPrivacyActionBlock)(int);
    delegate void AuthPrivacyActionBlock(int arg0);

    // typedef void (^AuthPrivacyPageCustomBlock)(int);
    delegate void AuthPrivacyPageCustomBlock(int arg0);

    // @interface NTESQuickLoginModel : NSObject
    [BaseType(typeof(NSObject))]
    interface NTESQuickLoginModel
    {
        // @property (nonatomic, weak) UIViewController * _Nullable currentVC;
        [NullAllowed, Export("currentVC", ArgumentSemantic.Weak)]
        UIViewController CurrentVC { get; set; }

        // @property (nonatomic, weak) UIViewController * _Nullable rootViewController;
        [NullAllowed, Export("rootViewController", ArgumentSemantic.Weak)]
        UIViewController RootViewController { get; set; }

        // @property (assign, nonatomic) NTESPresentDirection presentDirectionType;
        [Export("presentDirectionType", ArgumentSemantic.Assign)]
        NTESPresentDirection PresentDirectionType { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull backgroundColor;
        [Export("backgroundColor", ArgumentSemantic.Strong)]
        UIColor BackgroundColor { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull bgImage;
        [Export("bgImage", ArgumentSemantic.Strong)]
        UIImage BgImage { get; set; }

        // @property (assign, nonatomic) UIViewContentMode contentMode;
        [Export("contentMode", ArgumentSemantic.Assign)]
        UIViewContentMode ContentMode { get; set; }

        // @property (assign, nonatomic) NTESInterfaceOrientation faceOrientation;
        [Export("faceOrientation", ArgumentSemantic.Assign)]
        NTESInterfaceOrientation FaceOrientation { get; set; }

        // @property (copy, nonatomic) AuthCustomViewBlock _Nonnull customViewBlock;
        [Export("customViewBlock", ArgumentSemantic.Copy)]
        AuthCustomViewBlock CustomViewBlock { get; set; }

        // @property (assign, nonatomic) UIModalPresentationStyle modalPresentationStyle;
        [Export("modalPresentationStyle", ArgumentSemantic.Assign)]
        UIModalPresentationStyle ModalPresentationStyle { get; set; }

        // @property (assign, nonatomic) UIModalTransitionStyle modalTransitionStyle;
        [Export("modalTransitionStyle", ArgumentSemantic.Assign)]
        UIModalTransitionStyle ModalTransitionStyle { get; set; }

        // @property (copy, nonatomic) AuthVideoViewBlock _Nonnull videoViewBlock;
        [Export("videoViewBlock", ArgumentSemantic.Copy)]
        AuthVideoViewBlock VideoViewBlock { get; set; }

        // @property (assign, nonatomic) BOOL prefersHomeIndicatorHidden;
        [Export("prefersHomeIndicatorHidden")]
        bool PrefersHomeIndicatorHidden { get; set; }

        // @property (copy, nonatomic) AuthBackActionBlock _Nonnull backActionBlock;
        [Export("backActionBlock", ArgumentSemantic.Copy)]
        AuthBackActionBlock BackActionBlock { get; set; }

        // @property (copy, nonatomic) AuthCloseActionBlock _Nonnull closeActionBlock;
        [Export("closeActionBlock", ArgumentSemantic.Copy)]
        AuthCloseActionBlock CloseActionBlock { get; set; }

        // @property (copy, nonatomic) AuthLoginActionBlock _Nonnull loginActionBlock;
        [Export("loginActionBlock", ArgumentSemantic.Copy)]
        AuthLoginActionBlock LoginActionBlock { get; set; }

        // @property (copy, nonatomic) AuthCheckActionBlock _Nonnull checkActionBlock;
        [Export("checkActionBlock", ArgumentSemantic.Copy)]
        AuthCheckActionBlock CheckActionBlock { get; set; }

        // @property (copy, nonatomic) AuthPrivacyActionBlock _Nonnull privacyActionBlock;
        [Export("privacyActionBlock", ArgumentSemantic.Copy)]
        AuthPrivacyActionBlock PrivacyActionBlock { get; set; }

        // @property (copy, nonatomic) AuthPrivacyPageCustomBlock _Nonnull pageCustomBlock;
        [Export("pageCustomBlock", ArgumentSemantic.Copy)]
        AuthPrivacyPageCustomBlock PageCustomBlock { get; set; }

        // @property (copy, nonatomic) AuthPrograssHUDBlock _Nonnull prograssHUDBlock;
        [Export("prograssHUDBlock", ArgumentSemantic.Copy)]
        AuthPrograssHUDBlock PrograssHUDBlock { get; set; }

        // @property (copy, nonatomic) AuthLoadingViewBlock _Nonnull loadingViewBlock;
        [Export("loadingViewBlock", ArgumentSemantic.Copy)]
        AuthLoadingViewBlock LoadingViewBlock { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull localVideoFileName;
        [Export("localVideoFileName")]
        string LocalVideoFileName { get; set; }

        // @property (assign, nonatomic) BOOL isRepeatPlay;
        [Export("isRepeatPlay")]
        bool IsRepeatPlay { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull videoURL;
        [Export("videoURL")]
        string VideoURL { get; set; }

        // @property (nonatomic, strong) UIView * _Nonnull videoMarkView;
        [Export("videoMarkView", ArgumentSemantic.Strong)]
        UIView VideoMarkView { get; set; }

        // @property (copy, nonatomic) NSArray<UIImage *> * _Nullable animationImages;
        [NullAllowed, Export("animationImages", ArgumentSemantic.Copy)]
        UIImage[] AnimationImages { get; set; }

        // @property (assign, nonatomic) NSTimeInterval animationDuration;
        [Export("animationDuration")]
        double AnimationDuration { get; set; }

        // @property (assign, nonatomic) NSInteger animationRepeatCount;
        [Export("animationRepeatCount")]
        nint AnimationRepeatCount { get; set; }

        // @property (assign, nonatomic) UIStatusBarStyle statusBarStyle;
        [Export("statusBarStyle", ArgumentSemantic.Assign)]
        UIStatusBarStyle StatusBarStyle { get; set; }

        // @property (assign, nonatomic) BOOL navBarHidden;
        [Export("navBarHidden")]
        bool NavBarHidden { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull navBgImage;
        [Export("navBgImage", ArgumentSemantic.Strong)]
        UIImage NavBgImage { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull navBgColor;
        [Export("navBgColor", ArgumentSemantic.Strong)]
        UIColor NavBgColor { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull navText;
        [Export("navText")]
        string NavText { get; set; }

        // @property (nonatomic, strong) UIFont * _Nonnull navTextFont;
        [Export("navTextFont", ArgumentSemantic.Strong)]
        UIFont NavTextFont { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull navTextColor;
        [Export("navTextColor", ArgumentSemantic.Strong)]
        UIColor NavTextColor { get; set; }

        // @property (assign, nonatomic) BOOL navTextHidden;
        [Export("navTextHidden")]
        bool NavTextHidden { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull navReturnImg;
        [Export("navReturnImg", ArgumentSemantic.Strong)]
        UIImage NavReturnImg { get; set; }

        // @property (assign, nonatomic) BOOL shouldHiddenNavReturnImg;
        [Export("shouldHiddenNavReturnImg")]
        bool ShouldHiddenNavReturnImg { get; set; }

        // @property (assign, nonatomic) CGFloat navReturnImgLeftMargin;
        [Export("navReturnImgLeftMargin")]
        nfloat NavReturnImgLeftMargin { get; set; }

        // @property (assign, nonatomic) CGFloat navReturnImgBottomMargin;
        [Export("navReturnImgBottomMargin")]
        nfloat NavReturnImgBottomMargin { get; set; }

        // @property (assign, nonatomic) CGFloat navReturnImgWidth;
        [Export("navReturnImgWidth")]
        nfloat NavReturnImgWidth { get; set; }

        // @property (assign, nonatomic) CGFloat navReturnImgHeight;
        [Export("navReturnImgHeight")]
        nfloat NavReturnImgHeight { get; set; }

        // @property (nonatomic, strong) id _Nonnull navControl;
        [Export("navControl", ArgumentSemantic.Strong)]
        NSObject NavControl { get; set; }

        // @property (assign, nonatomic) CGFloat navControlRightMargin;
        [Export("navControlRightMargin")]
        nfloat NavControlRightMargin { get; set; }

        // @property (assign, nonatomic) CGFloat navControlBottomMargin;
        [Export("navControlBottomMargin")]
        nfloat NavControlBottomMargin { get; set; }

        // @property (assign, nonatomic) CGFloat navControlWidth;
        [Export("navControlWidth")]
        nfloat NavControlWidth { get; set; }

        // @property (assign, nonatomic) CGFloat navControlHeight;
        [Export("navControlHeight")]
        nfloat NavControlHeight { get; set; }

        // @property (copy, nonatomic) AuthCustomNavBlock _Nonnull customNavBlock;
        [Export("customNavBlock", ArgumentSemantic.Copy)]
        AuthCustomNavBlock CustomNavBlock { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull logoImg;
        [Export("logoImg", ArgumentSemantic.Strong)]
        UIImage LogoImg { get; set; }

        // @property (assign, nonatomic) CGFloat logoWidth;
        [Export("logoWidth")]
        nfloat LogoWidth { get; set; }

        // @property (assign, nonatomic) CGFloat logoHeight;
        [Export("logoHeight")]
        nfloat LogoHeight { get; set; }

        // @property (assign, nonatomic) CGFloat logoOffsetTopY;
        [Export("logoOffsetTopY")]
        nfloat LogoOffsetTopY { get; set; }

        // @property (assign, nonatomic) CGFloat logoOffsetX;
        [Export("logoOffsetX")]
        nfloat LogoOffsetX { get; set; }

        // @property (assign, nonatomic) BOOL logoHidden;
        [Export("logoHidden")]
        bool LogoHidden { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull numberColor;
        [Export("numberColor", ArgumentSemantic.Strong)]
        UIColor NumberColor { get; set; }

        // @property (assign, nonatomic) CGFloat numberOffsetTopY;
        [Export("numberOffsetTopY")]
        nfloat NumberOffsetTopY { get; set; }

        // @property (assign, nonatomic) CGFloat numberOffsetX;
        [Export("numberOffsetX")]
        nfloat NumberOffsetX { get; set; }

        // @property (nonatomic, strong) UIFont * _Nonnull numberFont;
        [Export("numberFont", ArgumentSemantic.Strong)]
        UIFont NumberFont { get; set; }

        // @property (assign, nonatomic) CGFloat numberHeight;
        [Export("numberHeight")]
        nfloat NumberHeight { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull numberBackgroundColor;
        [Export("numberBackgroundColor", ArgumentSemantic.Strong)]
        UIColor NumberBackgroundColor { get; set; }

        // @property (assign, nonatomic) int numberCornerRadius;
        [Export("numberCornerRadius")]
        int NumberCornerRadius { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull numberLeftContent;
        [Export("numberLeftContent")]
        string NumberLeftContent { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull numberRightContent;
        [Export("numberRightContent")]
        string NumberRightContent { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull brandColor;
        [Export("brandColor", ArgumentSemantic.Strong)]
        UIColor BrandColor { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull brandBackgroundColor;
        [Export("brandBackgroundColor", ArgumentSemantic.Strong)]
        UIColor BrandBackgroundColor { get; set; }

        // @property (assign, nonatomic) CGFloat brandWidth;
        [Export("brandWidth")]
        nfloat BrandWidth { get; set; }

        // @property (assign, nonatomic) CGFloat brandHeight;
        [Export("brandHeight")]
        nfloat BrandHeight { get; set; }

        // @property (nonatomic, strong) UIFont * _Nonnull brandFont;
        [Export("brandFont", ArgumentSemantic.Strong)]
        UIFont BrandFont { get; set; }

        // @property (assign, nonatomic) CGFloat brandOffsetTopY;
        [Export("brandOffsetTopY")]
        nfloat BrandOffsetTopY { get; set; }

        // @property (assign, nonatomic) CGFloat brandOffsetX;
        [Export("brandOffsetX")]
        nfloat BrandOffsetX { get; set; }

        // @property (assign, nonatomic) BOOL brandHidden;
        [Export("brandHidden")]
        bool BrandHidden { get; set; }

        // @property (assign, nonatomic) CGFloat brandLogoOffsetMargin;
        [Export("brandLogoOffsetMargin")]
        nfloat BrandLogoOffsetMargin { get; set; }

        // @property (assign, nonatomic) CGFloat brandLogoWidth;
        [Export("brandLogoWidth")]
        nfloat BrandLogoWidth { get; set; }

        // @property (assign, nonatomic) CGFloat brandLogoHeight;
        [Export("brandLogoHeight")]
        nfloat BrandLogoHeight { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull logBtnText;
        [Export("logBtnText")]
        string LogBtnText { get; set; }

        // @property (nonatomic, strong) UIFont * _Nonnull logBtnTextFont;
        [Export("logBtnTextFont", ArgumentSemantic.Strong)]
        UIFont LogBtnTextFont { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull logBtnTextColor;
        [Export("logBtnTextColor", ArgumentSemantic.Strong)]
        UIColor LogBtnTextColor { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnOffsetTopY;
        [Export("logBtnOffsetTopY")]
        nfloat LogBtnOffsetTopY { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnOffsetX;
        [Export("logBtnOffsetX")]
        nfloat LogBtnOffsetX { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnRadius;
        [Export("logBtnRadius")]
        nfloat LogBtnRadius { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull logBtnUsableBGColor;
        [Export("logBtnUsableBGColor", ArgumentSemantic.Strong)]
        UIColor LogBtnUsableBGColor { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull logBtnEnableImg;
        [Export("logBtnEnableImg", ArgumentSemantic.Strong)]
        UIImage LogBtnEnableImg { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull logBtnHighlightedImg;
        [Export("logBtnHighlightedImg", ArgumentSemantic.Strong)]
        UIImage LogBtnHighlightedImg { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnOriginLeft;
        [Export("logBtnOriginLeft")]
        nfloat LogBtnOriginLeft { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnOriginRight;
        [Export("logBtnOriginRight")]
        nfloat LogBtnOriginRight { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnHeight;
        [Export("logBtnHeight")]
        nfloat LogBtnHeight { get; set; }

        // @property (assign, nonatomic) CGFloat logBtnWidth;
        [Export("logBtnWidth")]
        nfloat LogBtnWidth { get; set; }

        // @property (assign, nonatomic) CGPoint startPoint;
        [Export("startPoint", ArgumentSemantic.Assign)]
        CGPoint StartPoint { get; set; }

        // @property (assign, nonatomic) CGPoint endPoint;
        [Export("endPoint", ArgumentSemantic.Assign)]
        CGPoint EndPoint { get; set; }

        // @property (copy, nonatomic) NSArray<NSNumber *> * _Nullable locations;
        [NullAllowed, Export("locations", ArgumentSemantic.Copy)]
        NSNumber[] Locations { get; set; }

        // @property (copy, nonatomic) NSArray * _Nullable colors;
        [NullAllowed, Export("colors", ArgumentSemantic.Copy)]
        NSObject[] Colors { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull uncheckedImg;
        [Export("uncheckedImg", ArgumentSemantic.Strong)]
        UIImage UncheckedImg { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull checkedImg;
        [Export("checkedImg", ArgumentSemantic.Strong)]
        UIImage CheckedImg { get; set; }

        // @property (assign, nonatomic) CGFloat checkboxWH;
        [Export("checkboxWH")]
        nfloat CheckboxWH { get; set; }

        // @property (assign, nonatomic) BOOL privacyState;
        [Export("privacyState")]
        bool PrivacyState { get; set; }

        // @property (assign, nonatomic) BOOL checkedHidden;
        [Export("checkedHidden")]
        bool CheckedHidden { get; set; }

        // @property (assign, nonatomic) BOOL checkedSelected;
        [Export("checkedSelected")]
        bool CheckedSelected { get; set; }

        // @property (assign, nonatomic) NSCheckBoxAlignment checkBoxAlignment;
        [Export("checkBoxAlignment", ArgumentSemantic.Assign)]
        NSCheckBoxAlignment CheckBoxAlignment { get; set; }

        // @property (assign, nonatomic) CGFloat checkBoxMargin;
        [Export("checkBoxMargin")]
        nfloat CheckBoxMargin { get; set; }

        // @property (nonatomic, strong) UIButton * _Nonnull checkBox;
        [Export("checkBox", ArgumentSemantic.Strong)]
        UIButton CheckBox { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appPrivacyText;
        [Export("appPrivacyText")]
        string AppPrivacyText { get; set; }

        // @property (assign, nonatomic) int appPrivacyLineSpacing;
        [Export("appPrivacyLineSpacing")]
        int AppPrivacyLineSpacing { get; set; }

        // @property (assign, nonatomic) int appPrivacyWordSpacing;
        [Export("appPrivacyWordSpacing")]
        int AppPrivacyWordSpacing { get; set; }

        // @property (assign, nonatomic) BOOL shouldHiddenPrivacyMarks;
        [Export("shouldHiddenPrivacyMarks")]
        bool ShouldHiddenPrivacyMarks { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appFPrivacyText;
        [Export("appFPrivacyText")]
        string AppFPrivacyText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appSPrivacyText;
        [Export("appSPrivacyText")]
        string AppSPrivacyText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appTPrivacyText;
        [Export("appTPrivacyText")]
        string AppTPrivacyText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appFourPrivacyText;
        [Export("appFourPrivacyText")]
        string AppFourPrivacyText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appFPrivacyURL;
        [Export("appFPrivacyURL")]
        string AppFPrivacyURL { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appSPrivacyURL;
        [Export("appSPrivacyURL")]
        string AppSPrivacyURL { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appTPrivacyURL;
        [Export("appTPrivacyURL")]
        string AppTPrivacyURL { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appFourPrivacyURL;
        [Export("appFourPrivacyURL")]
        string AppFourPrivacyURL { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appPrivacyTitleText;
        [Export("appPrivacyTitleText")]
        string AppPrivacyTitleText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appFPrivacyTitleText;
        [Export("appFPrivacyTitleText")]
        string AppFPrivacyTitleText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appSPrivacyTitleText;
        [Export("appSPrivacyTitleText")]
        string AppSPrivacyTitleText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appTPrivacyTitleText;
        [Export("appTPrivacyTitleText")]
        string AppTPrivacyTitleText { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull appFourPrivacyTitleText;
        [Export("appFourPrivacyTitleText")]
        string AppFourPrivacyTitleText { get; set; }

        // @property (assign, nonatomic) NSTextAlignment appPrivacyAlignment;
        [Export("appPrivacyAlignment", ArgumentSemantic.Assign)]
        UITextAlignment AppPrivacyAlignment { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull privacyColor;
        [Export("privacyColor", ArgumentSemantic.Strong)]
        UIColor PrivacyColor { get; set; }

        // @property (nonatomic, strong) UIFont * _Nonnull privacyFont;
        [Export("privacyFont", ArgumentSemantic.Strong)]
        UIFont PrivacyFont { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull protocolColor;
        [Export("protocolColor", ArgumentSemantic.Strong)]
        UIColor ProtocolColor { get; set; }

        // @property (assign, nonatomic) CGFloat appPrivacyOriginLeftMargin;
        [Export("appPrivacyOriginLeftMargin")]
        nfloat AppPrivacyOriginLeftMargin { get; set; }

        // @property (assign, nonatomic) CGFloat appPrivacyOriginRightMargin;
        [Export("appPrivacyOriginRightMargin")]
        nfloat AppPrivacyOriginRightMargin { get; set; }

        // @property (assign, nonatomic) CGFloat appPrivacyOriginBottomMargin;
        [Export("appPrivacyOriginBottomMargin")]
        nfloat AppPrivacyOriginBottomMargin { get; set; }

        // @property (assign, nonatomic) CGFloat appPrivacyOriginTopMargin;
        [Export("appPrivacyOriginTopMargin")]
        nfloat AppPrivacyOriginTopMargin { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull privacyNavReturnImg;
        [Export("privacyNavReturnImg", ArgumentSemantic.Strong)]
        UIImage PrivacyNavReturnImg { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull progressColor;
        [Export("progressColor", ArgumentSemantic.Strong)]
        UIColor ProgressColor { get; set; }

        // @property (nonatomic, strong) UITextView * _Nonnull privacyTextView;
        [Export("privacyTextView", ArgumentSemantic.Strong)]
        UITextView PrivacyTextView { get; set; }

        // @property (copy, nonatomic) NSString * _Nonnull noticeString;
        [Export("noticeString")]
        string NoticeString { get; set; }

        // @property (assign, nonatomic) NTESAuthWindowPop authWindowPop;
        [Export("authWindowPop", ArgumentSemantic.Assign)]
        NTESAuthWindowPop AuthWindowPop { get; set; }

        // @property (nonatomic, strong) UIColor * _Nonnull popBackgroundColor;
        [Export("popBackgroundColor", ArgumentSemantic.Strong)]
        UIColor PopBackgroundColor { get; set; }

        // @property (assign, nonatomic) CGFloat authWindowWidth;
        [Export("authWindowWidth")]
        nfloat AuthWindowWidth { get; set; }

        // @property (assign, nonatomic) CGFloat authWindowHeight;
        [Export("authWindowHeight")]
        nfloat AuthWindowHeight { get; set; }

        // @property (nonatomic, strong) UIImage * _Nonnull closePopImg;
        [Export("closePopImg", ArgumentSemantic.Strong)]
        UIImage ClosePopImg { get; set; }

        // @property (assign, nonatomic) CGFloat closePopImgWidth;
        [Export("closePopImgWidth")]
        nfloat ClosePopImgWidth { get; set; }

        // @property (assign, nonatomic) CGFloat closePopImgHeight;
        [Export("closePopImgHeight")]
        nfloat ClosePopImgHeight { get; set; }

        // @property (assign, nonatomic) CGFloat closePopImgOriginY;
        [Export("closePopImgOriginY")]
        nfloat ClosePopImgOriginY { get; set; }

        // @property (assign, nonatomic) CGFloat closePopImgOriginX;
        [Export("closePopImgOriginX")]
        nfloat ClosePopImgOriginX { get; set; }

        // @property (assign, nonatomic) BOOL openBackTapGestureRecognizer;
        [Export("openBackTapGestureRecognizer")]
        bool OpenBackTapGestureRecognizer { get; set; }

        // @property (assign, nonatomic) CGFloat authWindowCenterOriginY;
        [Export("authWindowCenterOriginY")]
        nfloat AuthWindowCenterOriginY { get; set; }

        // @property (assign, nonatomic) CGFloat authWindowCenterOriginX;
        [Export("authWindowCenterOriginX")]
        nfloat AuthWindowCenterOriginX { get; set; }

        // @property (assign, nonatomic) int popCenterCornerRadius;
        [Export("popCenterCornerRadius")]
        int PopCenterCornerRadius { get; set; }

        // @property (assign, nonatomic) int popBottomCornerRadius;
        [Export("popBottomCornerRadius")]
        int PopBottomCornerRadius { get; set; }

        // @property (assign, nonatomic) BOOL isOpenSwipeGesture;
        [Export("isOpenSwipeGesture")]
        bool IsOpenSwipeGesture { get; set; }
    }

    // @protocol NTESQuickLoginManagerDelegate <NSObject>
    [Protocol, Model(AutoGeneratedName = true)]
    [BaseType(typeof(NSObject))]
    interface NTESQuickLoginManagerDelegate
    {
        // @required -(void)authViewDidLoad;
        [Abstract]
        [Export("authViewDidLoad")]
        void AuthViewDidLoad();

        // @required -(void)authViewWillAppear;
        [Abstract]
        [Export("authViewWillAppear")]
        void AuthViewWillAppear();

        // @required -(void)authViewDidAppear;
        [Abstract]
        [Export("authViewDidAppear")]
        void AuthViewDidAppear();

        // @required -(void)authViewWillDisappear;
        [Abstract]
        [Export("authViewWillDisappear")]
        void AuthViewWillDisappear();

        // @required -(void)authViewDidDisappear;
        [Abstract]
        [Export("authViewDidDisappear")]
        void AuthViewDidDisappear();

        // @required -(void)authViewDealloc;
        [Abstract]
        [Export("authViewDealloc")]
        void AuthViewDealloc();
    }

    // typedef void (^NTESQLGetPhoneNumHandler)(NSDictionary * _Nonnull);
    delegate void NTESQLGetPhoneNumHandler(NSDictionary arg0);

    // typedef void (^NTESQLAuthorizeHandler)(NSDictionary * _Nonnull);
    delegate void NTESQLAuthorizeHandler(NSDictionary arg0);

    // typedef void (^NTESAuthorizeCompletionHandler)();
    delegate void NTESAuthorizeCompletionHandler();

    // @interface NTESQuickLoginManager : NSObject
    [BaseType(typeof(NSObject))]
    interface NTESQuickLoginManager
    {
        [Wrap("WeakDelegate")]
        [NullAllowed]
        NTESQuickLoginManagerDelegate Delegate { get; set; }

        // @property (nonatomic, weak) id<NTESQuickLoginManagerDelegate> _Nullable delegate;
        [NullAllowed, Export("delegate", ArgumentSemantic.Weak)]
        NSObject WeakDelegate { get; set; }

        // @property (assign, nonatomic) NSTimeInterval timeoutInterval;
        [Export("timeoutInterval")]
        double TimeoutInterval { get; set; }

        // @property (assign, nonatomic) BOOL allowUploadInfo;
        [Export("allowUploadInfo")]
        bool AllowUploadInfo { get; set; }

        // @property (readonly, nonatomic, strong) NTESQuickLoginModel * _Nonnull model;
        [Export("model", ArgumentSemantic.Strong)]
        NTESQuickLoginModel Model { get; }

        // +(NTESQuickLoginManager * _Nonnull)sharedInstance;
        [Static]
        [Export("sharedInstance")]
        NTESQuickLoginManager SharedInstance { get; }

        // -(BOOL)shouldQuickLogin;
        [Export("shouldQuickLogin")]
        bool ShouldQuickLogin { get; }

        // -(NTESCarrierType)getCarrier;
        [Export("getCarrier")]
        NTESCarrierType Carrier { get; }

        // -(void)registerWithBusinessID:(NSString * _Nonnull)businessID;
        [Export("registerWithBusinessID:")]
        void RegisterWithBusinessID(string businessID);

        // -(void)registerWithBusinessID:(NSString * _Nonnull)businessID configURL:(NSString * _Nullable)configURL extData:(NSString * _Nullable)extData;
        [Export("registerWithBusinessID:configURL:extData:")]
        void RegisterWithBusinessID(string businessID, [NullAllowed] string configURL, [NullAllowed] string extData);

        // -(void)getPhoneNumberCompletion:(NTESQLGetPhoneNumHandler _Nonnull)phoneNumberHandler;
        [Export("getPhoneNumberCompletion:")]
        void GetPhoneNumberCompletion(NTESQLGetPhoneNumHandler phoneNumberHandler);

        // -(void)setupModel:(NTESQuickLoginModel * _Nonnull)model;
        [Export("setupModel:")]
        void SetupModel(NTESQuickLoginModel model);

        // -(void)CUCMCTAuthorizeLoginCompletion:(NTESQLAuthorizeHandler _Nonnull)authorizeHandler;
        [Export("CUCMCTAuthorizeLoginCompletion:")]
        void CUCMCTAuthorizeLoginCompletion(NTESQLAuthorizeHandler authorizeHandler);

        // -(void)CUCMCTAuthorizeLoginCompletion:(NTESQLAuthorizeHandler _Nonnull)authorizeHandler animated:(BOOL)animated;
        [Export("CUCMCTAuthorizeLoginCompletion:animated:")]
        void CUCMCTAuthorizeLoginCompletion(NTESQLAuthorizeHandler authorizeHandler, bool animated);

        // -(void)closeAuthController:(NTESAuthorizeCompletionHandler _Nullable)completionHandler;
        [Export("closeAuthController:")]
        void CloseAuthController([NullAllowed] NTESAuthorizeCompletionHandler completionHandler);

        // -(NSString * _Nonnull)getSDKVersion;
        [Export("getSDKVersion")]
        string SDKVersion { get; }

        // -(void)clearPreLoginCache;
        [Export("clearPreLoginCache")]
        void ClearPreLoginCache();

        // -(void)authLoginButtonClick;
        [Export("authLoginButtonClick")]
        void AuthLoginButtonClick();
    }
}


